package ewu

import ewu._
import scala.collection.mutable.ArrayBuffer

/**
 * Die Klasse Name stellt einen Operanden dar und steht
 * fuer Variablen.
 * 
 * Ueber das Attribut "name" wird der Variablenname
 * festgelegt.
 */

case class Name(name: String) extends Operand {

  def evaluate(env: Environment): Option[BigInt] =
    env.getValue(name) match {
      case Some(x:Number) => Some(x.value)
      case Some(x) => x.evaluate(env)
      case None => None
    }

  override def toString: String = name
    
  def getVariables(a: ArrayBuffer[Name]) = {
    if(!a.contains(this))
      a.append(this)
  }
  
  def replaceVariable(fromVar: Name, toVar: Expression) = {}
}